Memory devices are typically provided as internal storage areas in the computer. The term memory identifies data storage that comes in the form of integrated circuit chips. There are several different types of memory used in modern electronics, one common type is RAM (random-access memory). RAM is characteristically found in use as main memory in a computer environment. RAM refers to read and write memory; that is, you can both write data into RAM and read data from RAM. This is in contrast to ROM, which permits you only to read data. Most RAM is volatile, which means that it requires a steady flow of electricity to maintain its contents. As soon as the power is turned off, whatever data was in RAM is lost.
Computers almost always contain a small amount of read-only memory (ROM) that holds instructions for starting up the computer. Unlike RAM, ROM cannot be written to. Memory devices that do not lose the data content of their memory cells when power is removed are generally referred to as non-volatile memories. Two such forms of non-volatile memory are EEPROM (electrically erasable programmable read-only memory) and Flash memory, that are special type non-volatile ROM that is non-volatile but where individual cells can be programmed and erased (by individual cell erasure for EEPROM and “block” erasure for Flash) by exposing their cells to an electrical charge.
Memory devices typically read or write data in reference to an address or location associated with the data, which is input to the memory device at the time of the data access. Another form of memory device is content addressable memory (CAM), also known as associative memory or associative storage. In content addressable memory, the data itself is utilized to access the contents memory array, in effect performing a search of the data contents. This contrasts with the conventional approach of utilizing a known address to access the location storing the data in a memory. CAM memories generally utilize all or part of the contents of the data, accessing the data location by matching (typically in a simultaneous search) the data value in the array. A binary CAM searches for the 1's and 0's of each bit position in the input data, while ternary CAM devices allow search for 1's, 0's and don't cares (“X”) to match each bit position in the input data. Once a match is found, CAM memory returns the address(es) of the match(es) or, alternatively, additional associated data stored with the match. If no match is found, the CAM indicates this with a signal or data return stating that no matching data was located. This allows CAM to be utilized as a hardware-based search device in applications that require fast searches or pattern matching, such as in databases, image or voice recognition, biometrics, data compression, cache memory controllers, or computer and communication networks (i.e., in a network switch or media access controller (MAC)).
Because a CAM is designed to quickly search its memory array in a single operation, it is much faster than equivalent memory and/or processor based data searches. CAM memory devices, however, are complex, volatile, require relatively large amounts of power to operate, and are typically of limited storage capacity. This high cost, complexity, high power usage, and low storage is particularly becoming an issue as CAM devices are utilized in modern applications that are storing increasing amounts of data and/or are operating with lower power or battery powered devices.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for large capacity, low cost CAM memory devices and arrays.